1 Pendahuluan

Data berbentuk time series bisa dianalisa dengan berbagai macam cara. Salah satu analisa yang sering digunakan di dunia real adalah time series forecast modelling.

1.1 Tujuan

Apakah bisa kita membuat model time series untuk melakukan forecast data harga gula?

1.2 Data yang dipakai

Data yang digunakan diambil dari situs isosugar.org. Data yang tersedia adalah data harga gula harian sejak dari 2017-01-03 hingga 2020-06-25.

Data diambil dengan cara web scrap.

Kita hanya akan membuat model berdasarkan data Januari 2017 hingga Mei 2020 sedangkan data pada Juni 2020 akan digunakan untuk validasi model forecast.

1.3 Missing data NA

Dari data harian yang ada, ternyata pada saat hari libur datanya kosong (NA). Data kosong ini akan diisi harga pada hari sebelumnya (misal: closing harga Jumat atau kondisi lainnya).

1.4 Bagaimana visualisasi datanya?


2 Pre-Analisa

2.1 Stationary

Salah satu syarat agar kita bisa membangun model forecast dari data time series adalah:

Data yang digunakan harus stationary.

Bagaimana cara mengeceknya?

## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts
## Dickey-Fuller = -3.1252, Lag order = 10, p-value = 0.102
## alternative hypothesis: stationary
## [1] "Tidak stationary"

Ternyata datanya tidak stasioner sehingga perlu ada transformasi agar menjadi stasioner. Caranya adalah dengan membuat data time series baru dengan membuat selisih harga dengan lag = n hari.

Bagaimana mencari nilai n?

ndiffs(ts, alpha=0.05, test=c('kpss'))
## [1] 1

Sehingga didapat lag = 1 hari.

new_time_series = current_time_series[i+1] - current_time_series[i]

Yakni: data esok dikurang data sekarang.

Bagaimana hasil transformasinya?

Mari kita cek apakah data hasil transformasinya stasioner atau belum!

## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_transformed
## Dickey-Fuller = -10.227, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
## [1] "stationary"

Ternyata hasilnya stasioner. Berarti kita akan membuat model berdasarkan data hasil transformasi ini.

2.2 Decomposition

Mari kita lihat dulu bagaimana jika data ini kita dekomposisi menggunakan STL.


3 Membuat Model Forecast Model

Kita akan membuat model untuk forecast harga gula. Agar bisa melakukan cross validation, data akan kita pecah menjadi dua, yakni:

  1. train dataset, yakni berisi data selisih harga gula 2017 - 2019.
  2. test dataset, yakni data harga gula pada Januari 2020 agar kita bisa menilai performance dari model yang kita buat.

Kita akan membuat beberapa model time series, model yang terbaik akan dipilih berdasarkan validasi dengan test dataset.

3.1 Model I: ARIMA

##                         ME      RMSE       MAE MPE MAPE      MASE         ACF1
## Training set -1.310490e-06 0.1467468 0.1077438 NaN  Inf 0.6122437 7.803934e-06
## Test set      6.492807e-02 0.1803928 0.1472824 NaN  Inf 0.8369185 2.595380e-01
##              Theil's U
## Training set        NA
## Test set           NaN

3.2 Model II: Exponential Smoothing

##                        ME      RMSE       MAE MPE MAPE      MASE         ACF1
## Training set 0.0001352459 0.1467556 0.1077333 NaN  Inf 0.6121839 -0.004552901
## Test set     0.0648734765 0.1803369 0.1472419 NaN  Inf 0.8366881  0.259331596
##              Theil's U
## Training set        NA
## Test set           NaN

3.3 Model III: Auto ARIMA

##                        ME      RMSE       MAE MPE MAPE      MASE       ACF1
## Training set -0.006444623 0.1805340 0.1122071 100  100 0.6376059 0.03225974
## Test set      0.037200000 0.1529575 0.1132000 100  100 0.6432482 0.22686399
##              Theil's U
## Training set        NA
## Test set             0

3.4 Model IV: HOLTWINTER

##                        ME      RMSE       MAE MPE MAPE      MASE        ACF1
## Training set -0.004979076 0.1996018 0.1288276 NaN  Inf 0.7320503 -0.03177781
## Test set      0.029275503 0.1817446 0.1431988 NaN  Inf 0.8137137  0.26008797
##              Theil's U
## Training set        NA
## Test set           NaN

3.5 Model V: NAIVE

##                  ME      RMSE       MAE MPE MAPE      MASE       ACF1 Theil's U
## Training set 0.0000 0.2511023 0.1734297 NaN  Inf 0.9854978 -0.4792217        NA
## Test set     0.0372 0.1529575 0.1132000 100  100 0.6432482  0.2268640         0

3.6 Model VI: TBATS

##                        ME      RMSE       MAE MPE MAPE      MASE      ACF1
## Training set -0.001409578 0.1788000 0.1139979 NaN  Inf 0.6477823 0.0203567
## Test set      0.045433505 0.1551474 0.1161518 Inf  Inf 0.6600212 0.2266743
##              Theil's U
## Training set        NA
## Test set           NaN

4 Model yang Dipilih

Rangkuman Akurasi Model
Metode MAE
Auto ARIMA 0.1132
Naive 0.1132
TBATS 0.1162
Holtwinter 0.1432
Exponential Smoothing 0.1472
ARIMA 0.1473